МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра САПР
ЗВІТ
до лабораторної роботи № 5
на тему:
ВИВЧЕННЯ БІБЛІОТЕКИ ПРИКЛАДНИХ ПРОГРАМ NLTK, ДЛЯ ОПРАЦЮВАННЯ ТЕКСТІВ ПРИРОДНОЮ МОВОЮ.
ПОЧАТКОВА ОБРОБКА ТЕКСТІВ ПРИРОДНОЮ МОВОЮ.
з дисципліни “Комп’ютерна лінгвістика”
Мета роботи: Вивчення основ програмування на мові Python. Вивчення методів роботи з файлами на локальних дисках та з Інтернету. Використання Юнікоду при обробці текстів. Нормалізація текстів, стемінг, лематизація та сегментація.
Теоретичні відомості
Частина електронних книжок з Project Gutenberg розповсюджується разом з NLTK у вигляді корпуса текстів. Для використання інших текстів з цього проекту можна переглянути каталог 25000 електронних книжок за адресою http://www.gutenberg.org/catalog/ та встановити адресу (URL) потрібного текстового файлу в ASCII кодуванні. 90% текстів в Project Gutenberg є англійською мовою, але він включає також тексти більше ніж 50-ма іншими мовами (каталонська, китайська, датська, фінська, французька, німецька, італійська, португальська, іспанська…).
Юніко́д, (англ. Unicode) — це промисловий стандарт розроблений, щоб зробити можливим для текстів і символів (графічних знаків) всіх писемних систем світу узгоджене представлення (репрезентацію) і обробку комп’ютерами. Юнікод підтримує більш ніж мільйон символів. Кожному символу ставиться у відповідність число, яке називають кодовою точкою. В Python кодові точки записуються у вигляді \uXXXX , де XXXX - чотири символи шістнадцяткового числа.
В межах програми обробка стрічок Unicode відбувається аналогічно до звичайних стрічок. Однак, коли Unicode символи зберігаються у файл або виводяться на екран, вони повинні бути закодовані, як потік байт. Деякі кодування (такі як ASCII та Latin-2) використовують один байт для представлення одної кодової точки і відповідно підтримують невеликий набір символів Unicode, достатній для одної мови. Інші кодування (такі як UTF-8) використовують послідовності байтів і можуть представити весь набір символів Unicode.
Текст у файлах є в певному кодування і потрібен певний механізм для перетворення його до Unicode. Такий механізм називають — декодування. Навпаки записати Unicode символи у файл або вивести на екран можна тільки попередньо перетворивши їх у потрібне кодування. Таке перетворення називають кодуванням.
ТЕКСТИ ПРОГРАМ НА МОВІ PYTHON
ВАРІАНТ №2
1. Напишіть функцію, яка приймає адресу URL, як аргумент, і повертає те що міститься за цією адресою з видаленням HTML розмітки. Використовувати urllib.urlopen для доступу до контенту наступним чином raw_contents = urllib.urlopen('http://www.nltk.org/').read().
import urllib
from urllib import urlopen
def Clean (url):
raw = urlopen(url).read()
raw_contents = nltk.clean_html(raw)
tokens = nltk.word_tokenize(raw_contents)
return tokens
url = "http://www.gutenberg.org/files/1342/1342.txt"
s = Clean(url)
print s[1000:1060]
Результат:
['twenty', 'such', 'should', 'come', ',', 'since', 'you',
'will', 'not', 'visit', 'them.', "''", "''", 'Depend', 'upon',
'it', ',', 'my', 'dear', ',', 'that', 'when', 'there', 'are',
'twenty', ',', 'I', 'will', 'visit', 'them', 'all.', "''",
'Mr.', 'Bennet', 'was', 'so', 'odd', 'a', 'mixture', 'of',
'quick', 'parts', ',', 'sarcastic', 'humour', ',', 'reserve',
',', 'and', 'caprice', ',', 'that', 'the', 'experience', 'of',
'three-and-twenty', 'years', 'had', 'been', 'insufficient']
2. Збережіть деякий текст у файлі corpus.txt. Визначити функцію load(f) для читання файлу, назва якого є її аргументом і повертає стрічку, яка містить текст з файлу.
Рис. 1. Текст програми №2.
3. Перепишіть наступний цикл як list comprehension:
>>> sent = ['The', 'dog', 'gave', 'John', 'the', 'newspaper']
>>> result = []
>>> for word in sent:
... word_len = (word, len(word))
... result.append(word_len)
>>> result
[('The', 3), ('dog', 3), ('gave', 4), ('John', 4), ('the', 3), ('newspaper', 9)]
Рис. 2. Текст...